docs: record EIP-2929 gas-estimation impact under v0.7.0 - #331
docs: record EIP-2929 gas-estimation impact under v0.7.0#331crazywriter1 wants to merge 5 commits into
Conversation
|
Checked this against the repo. The premise holds, the placement is right, and the aggregation is better than the description claims. Four notes, one of which I'd treat as a correctness fix rather than a nit. The dangling link is real, and this closes exactly one gap
I audited every
So this is precisely targeted — it's the only gap of its kind in the file. The The aggregation is worth more than the description saysThe note covers two separate changelog entries, both under
Folding L217 in is a real improvement rather than scope creep: it lives in a different subsection, has no pointer of its own, and is the same gas-schedule change from the caller's perspective. Worth saying so in the description, because as written it reads like a single-entry backfill. I also went looking for a conflation in 1. The sub-bullet inverts the mechanism (worth fixing)
Read plainly, "precompile account access" says that accessing the precompile is now cold/warm priced. That reading is wrong, and in a way a reader can't self-correct: EIP-2929 initializes What actually changed is the other direction — account loads performed by the precompile. From /// Gas cost to load an account balance for stateful precompiles.
///
/// Applies EIP-2929 warm/cold pricing.
fn account_load_cost(is_cold: bool) -> u64 {
if is_cold { COLD_ACCOUNT_ACCESS_COST } else { WARM_STORAGE_READ_COST }
}
This isn't pedantry, because the two readings imply different remediation. The wrong one suggests a flat ~2600 uplift per precompile call, which someone could paper over with a fixed bump. The real cost scales with how many distinct cold accounts the call touches, so a Memo subcall to a fresh recipient costs more than one to an address already in the access list — and that's the number an integrator needs to size a limit against. The changelog's own phrasing, "precompile account loads", is already correct. Suggest mirroring it:
2.
|
|
Thanks for the review @osr21. Addressed review:
|
|
Re-checked Retraction: my
|
|
Thanks and fair catch on Zero7. I followed your earlier wording without tracing the gate; you're right that Pushed a fix:
|
|
Checked Verified correctThe
The no-hardfork-gate point is stronger than stated. Mainnet launched at Zero6 with Zero7/Zero8 activating later by timestamp ( The example list names the Zero7-gated paths, not the repriced onesThis one is mine too — I suggested
The That matters because the two have opposite upgrade profiles:
So the third sub-bullet warns about stale And that path is not niche. Suggested amendment to the third sub-bullet:
That keeps your in-tree names, drops the implication that Memo/Multicall3From estimates are the migration risk, and puts the ungated path first. Separately:
|
Fair. |
Checked Verified correct in this revision
Retraction: the account-load pricing is hardfork-gated in
|
|
Updated. Fourth bullet now says the NativeCoinAuthority account-load charge is Zero6-gated (already open on live nets), so re-estimate still lands at the v0.7.1+ upgrade. Also restored backticks on NativeCoinAuthority / mint / burn / transfer. Left the v0.8.0 gate-removal note out of this PR. @osr21 |
Summary
BREAKING_CHANGES.md#v070for EIP-2929 precompile account-load gas impact, but that section had no entry.v0.7.xbinary; not hardfork-gated).Memo/Multicall3From) separately: different cold-access path, only live once Zero7 is active.v0.7.1+(nov0.7.0tag).Test plan
CHANGELOG.mdEIP-2929 bullet still links to#v070account_load_costcall sites (NativeCoinAuthority), not CallFrom-only paths